package org.ym.tools;

/**
 * @author ym
 * @date 2022-07-26 14:38:12
 */
public class NumberTool {
    private NumberTool(){}

    /**
     * 转换double类型
     * @param value 数值
     * @return 数据
     */
    public static double parseDouble(Object value){
        return parseDouble(value,0);
    }

    /**
     * 转换double类型
     * @param value 数值
     * @param defaultValue 默认值
     * @return 数据
     */
    public static double parseDouble(Object value,double defaultValue){
        try {
            return parseDouble(StringTool.objectToString(value),defaultValue);
        }catch (Exception e){
            return defaultValue;
        }
    }

    /**
     * 转换double类型
     * @param value 数值
     * @return 数据
     */
    public static double parseDouble(String value){
        return parseDouble(value,0);
    }

    /**
     * 转换double类型
     * @param value 数值
     * @param defaultValue 默认值
     * @return 数据
     */
    public static double parseDouble(String value,double defaultValue){
        try {
            return parseDouble(Double.valueOf(value),defaultValue);
        }catch (Exception e){
            return defaultValue;
        }
    }

    /**
     * 转换double类型
     * @param value 数值
     * @return 数据
     */
    public static double parseDouble(Double value){
        return parseDouble(value,0);
    }

    /**
     * 转换double类型
     * @param value 数值
     * @param defaultValue 默认值
     * @return 数据
     */
    public static double parseDouble(Double value,double defaultValue){
        return value == null ? defaultValue : value;
    }

    /**
     * 转换int类型
     * @param value 数值
     * @return 数据
     */
    public static int parseInt(Object value){
        return parseInt(value,0);
    }

    /**
     * 转换int类型
     * @param value 数值
     * @param defaultValue 默认值
     * @return 数据
     */
    public static int parseInt(Object value,int defaultValue){
        return parseInt(StringTool.objectToString(value),defaultValue);
    }

    /**
     * 转换int类型
     * @param value 数值
     * @param defaultValue 默认值
     * @return 数据
     */
    public static int parseInt(String value,int defaultValue){
        try {
            return parseInt(Integer.valueOf(value),defaultValue);
        }catch (Exception e){
            return defaultValue;
        }
    }

    /**
     * 转换int类型
     * @param value 数值
     * @return 数据
     */
    public static int parseInt(String value){
        return parseInt(value,0);
    }

    /**
     * 转换int类型
     * @param value 数值
     * @return 数据
     */
    public static int parseInt(Integer value){
        return parseInt(value,0);
    }

    /**
     * 转换int类型
     * @param value 数值
     * @return 数据
     */
    public static int parseInt(Integer value,int defaultValue){
        return value == null ? defaultValue : value;
    }


    /**
     * 转换long类型
     * @param value 数值
     * @return 数据
     */
    public static long parseLong(Object value){
        return parseLong(value,0);
    }

    /**
     * 转换long类型
     * @param value 数值
     * @param defaultValue 默认值
     * @return 数据
     */
    public static long parseLong(Object value,long defaultValue){
        return parseLong(StringTool.objectToString(value),defaultValue);
    }

    /**
     * 转换long类型
     * @param value 数值
     * @param defaultValue 默认值
     * @return 数据
     */
    public static long parseLong(String value,long defaultValue){
        try {
            return parseLong(Long.valueOf(value),defaultValue);
        }catch (Exception e){
            return defaultValue;
        }
    }

    /**
     * 转换long类型
     * @param value 数值
     * @return 数据
     */
    public static long parseLong(String value){
        return parseLong(value,0);
    }

    /**
     * 转换long类型
     * @param value 数值
     * @return 数据
     */
    public static long parseLong(Long value){
        return parseLong(value,0);
    }

    /**
     * 转换long类型
     * @param value 数值
     * @param defaultValue 默认值
     * @return 数据
     */
    public static long parseLong(Long value,long defaultValue){
        return value == null ? defaultValue : value;
    }

    /**
     * 转换float类型
     * @param value 数值
     * @return 数据
     */
    public static float parseFloat(Object value){
        return parseFloat(value,0);
    }

    /**
     * 转换float类型
     * @param value 数值
     * @param defaultValue 默认值
     * @return 数据
     */
    public static float parseFloat(Object value,float defaultValue){
        try {
            return parseFloat(StringTool.objectToString(value),defaultValue);
        }catch (Exception e){
            return defaultValue;
        }
    }

    /**
     * 转换float类型
     * @param value 数值
     * @return 数据
     */
    public static float parseFloat(String value){
        return parseFloat(value,0);
    }

    /**
     * 转换float类型
     * @param value 数值
     * @param defaultValue 默认值
     * @return 数据
     */
    public static float parseFloat(String value,float defaultValue){
        try {
            return parseFloat(Float.valueOf(value),defaultValue);
        }catch (Exception e){
            return defaultValue;
        }
    }

    /**
     * 转换float类型
     * @param value 数值
     * @return 数据
     */
    public static float parseFloat(Float value){
        return parseFloat(value,0);
    }

    /**
     * 转换float类型
     * @param value 数值
     * @param defaultValue 默认值
     * @return 数据
     */
    public static float parseFloat(Float value,float defaultValue){
        return value == null ? defaultValue : value;
    }

    /**
     * 转换short类型
     * @param value 数值
     * @return 数据
     */
    public static short parseShort(Object value){
        return parseShort(value,(short) 0);
    }

    /**
     * 转换short类型
     * @param value 数值
     * @param defaultValue 默认值
     * @return 数据
     */
    public static short parseShort(Object value,short defaultValue){
        try {
            return parseShort(StringTool.objectToString(value),defaultValue);
        }catch (Exception e){
            return defaultValue;
        }
    }

    /**
     * 转换short类型
     * @param value 数值
     * @return 数据
     */
    public static short parseShort(String value){
        return parseShort(value,(short) 0);
    }

    /**
     * 转换short类型
     * @param value 数值
     * @param defaultValue 默认值
     * @return 数据
     */
    public static short parseShort(String value,short defaultValue){
        try {
            return parseShort(Short.valueOf(value),defaultValue);
        }catch (Exception e){
            return defaultValue;
        }
    }

    /**
     * 转换short类型
     * @param value 数值
     * @return 数据
     */
    public static short parseShort(Short value){
        return parseShort(value,(short) 0);
    }

    /**
     * 转换short类型
     * @param value 数值
     * @param defaultValue 默认值
     * @return 数据
     */
    public static short parseShort(Short value,short defaultValue){
        return value == null ? defaultValue : value;
    }

    /**
     * 转换byte类型
     * @param value 数值
     * @return 数据
     */
    public static byte parseByte(Object value){
        return parseByte(value,(byte) 0);
    }

    /**
     * 转换byte类型
     * @param value 数值
     * @param defaultValue 默认值
     * @return 数据
     */
    public static byte parseByte(Object value,byte defaultValue){
        try {
            return parseByte(StringTool.objectToString(value),defaultValue);
        }catch (Exception e){
            return defaultValue;
        }
    }

    /**
     * 转换byte类型
     * @param value 数值
     * @return 数据
     */
    public static byte parseByte(String value){
        return parseByte(value,(byte) 0);
    }

    /**
     * 转换byte类型
     * @param value 数值
     * @param defaultValue 默认值
     * @return 数据
     */
    public static byte parseByte(String value,byte defaultValue){
        try {
            return parseByte(Byte.valueOf(value),defaultValue);
        }catch (Exception e){
            return defaultValue;
        }
    }

    /**
     * 转换byte类型
     * @param value 数值
     * @return 数据
     */
    public static byte parseByte(Byte value){
        return parseByte(value,(byte) 0);
    }

    /**
     * 转换byte类型
     * @param value 数值
     * @param defaultValue 默认值
     * @return 数据
     */
    public static byte parseByte(Byte value,byte defaultValue){
        return value == null ? defaultValue : value;
    }

    /**
     * 转换byte类型
     * @param value 数值
     * @return 数据
     */
    public static boolean parseBoolean(Object value){
        return parseBoolean(value,Boolean.FALSE);
    }

    /**
     * 转换byte类型
     * @param value 数值
     * @param defaultValue 默认值
     * @return 数据
     */
    public static boolean parseBoolean(Object value,boolean defaultValue){
        try {
            return parseBoolean(StringTool.objectToString(value),defaultValue);
        }catch (Exception e){
            return defaultValue;
        }
    }

    /**
     * 转换byte类型
     * @param value 数值
     * @return 数据
     */
    public static boolean parseBoolean(String value){
        return parseBoolean(value,Boolean.FALSE);
    }

    /**
     * 转换byte类型
     * @param value 数值
     * @param defaultValue 默认值
     * @return 数据
     */
    public static boolean parseBoolean(String value,boolean defaultValue){
        try {
            return parseBoolean(Boolean.valueOf(value),defaultValue);
        }catch (Exception e){
            return defaultValue;
        }
    }

    /**
     * 转换byte类型
     * @param value 数值
     * @return 数据
     */
    public static boolean parseBoolean(Boolean value){
        return parseBoolean(value,Boolean.FALSE);
    }

    /**
     * 转换byte类型
     * @param value 数值
     * @param defaultValue 默认值
     * @return 数据
     */
    public static boolean parseBoolean(Boolean value,boolean defaultValue){
        return value == null ? defaultValue : value;
    }
}
